<?php
/* © 2020-2025 ALYR.NET */
/**
 * 钉钉扫码登录页面
 */

// 检查是否已经登录
session_start();
if (isset($_SESSION['dd_user_id']) && !empty($_SESSION['dd_user_id'])) {
    // 已登录，重定向到首页
    header('Location: index.php');
    exit;
}

// 引入钉钉配置文件
if (file_exists(__DIR__ . '/config/dingtalk.php')) {
    require_once __DIR__ . '/config/dingtalk.php';
} else {
    // 创建config目录（如果不存在）
    if (!file_exists(__DIR__ . '/config')) {
        mkdir(__DIR__ . '/config', 0755, true);
    }
    
    // 如果配置文件不存在，复制现有配置文件到正确位置
    if (file_exists('config/dingtalk.php')) {
        copy('config/dingtalk.php', __DIR__ . '/config/dingtalk.php');
        require_once __DIR__ . '/config/dingtalk.php';
    } else {
        die('无法找到钉钉配置文件，请确保config/dingtalk.php文件存在');
    }
}

// 生成一个随机state，防止CSRF攻击
$state = md5(uniqid(mt_rand(), true));
$_SESSION['dd_state'] = $state;

// 配置重定向URL
$redirectUri = get_dingtalk_config('login.redirectUri');

// 构建直接登录URL (用于二维码无法显示时的备用方案)
$directLoginUrl = 'https://login.dingtalk.com/oauth2/auth?redirect_uri=' 
    . urlencode($redirectUri) 
    . '&response_type=code&client_id=' . get_dingtalk_config('appId')
    . '&scope=openid&state=' . $state
    . '&prompt=consent';

?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片内容审核系统 - 企业登录</title>
    <link rel="icon" href="favicon.ico" type="image/x-icon">
    <!-- 添加SameSite Cookie策略说明 -->
    <meta http-equiv="Set-Cookie" content="SameSite=None; Secure">
    <link rel="stylesheet" href="assets/css/login.css">
</head>
<body>
    <div class="login-container">
        <div class="company-logo">
            <!-- 企业LOGO -->
            <img src="assets/images/logo.png" alt="企业LOGO" style="max-width: 200px; height: auto;">
        </div>
        <h1>图片内容审核系统</h1>
        
        <?php if (isset($_GET['error'])): ?>
        <div class="error-message" style="display:block;">
            <?php 
            $error = $_GET['error'];
            if ($error === 'unauthorized') {
                echo '您不是企业成员，无法访问系统';
            } elseif ($error === 'auth_failed') {
                echo '身份验证失败，请重试';
            } elseif ($error === 'session_expired') {
                echo '登录会话已过期，请重新登录';
            } elseif ($error === 'invalid_admin') {
                echo '管理员账号或密码错误';
            } else {
                echo '登录失败，请重试';
            }
            ?>
        </div>
        <?php endif; ?>
        
        <!-- 直接登录按钮，替代钉钉扫码 -->
        <div>
            <a href="<?php echo htmlspecialchars($directLoginUrl); ?>" class="login-button">
            员工登录
            </a>
        </div>



        <div class="powered-by">
            <div id="debug-tools" style="margin-bottom:10px;display:none;">
            </div>
            图片内容审核系统 &copy; <?php echo date('Y'); ?>
        </div>
    </div>

    <script>
        // 页面加载完成后执行
        document.addEventListener('DOMContentLoaded', function() {
            // 添加调试信息
            console.log('登录参数:', {
                appId: '<?php echo get_dingtalk_config("appId"); ?>',
                redirectUri: '<?php echo $redirectUri; ?>'
            });
            
            // 判断是否显示调试工具
            var isLocalhost = window.location.hostname === 'localhost' || 
                              window.location.hostname === '127.0.0.1' || 
                              window.location.hostname.indexOf('.local') > -1;
            if (isLocalhost || window.location.search.indexOf('debug=1') > -1) {
                document.getElementById('debug-tools').style.display = 'block';
            }
        });
    </script>
</body>
</html>